home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / AMIGA / AMICUS / AMICUS09.ADF / AmigaBasicProgs / Requester (.txt) < prev    next >
AmigaBASIC Source Code  |  1986-05-22  |  2KB  |  82 lines

  1. SUB req(line1$,line2$,w%,s%,ans%) STATIC
  2. '--------------------------------------------
  3. ' AmigaBASIC requester subroutine
  4. '
  5. ' J. S. Plegge    14-Feb-1986
  6. '
  7. ' Based on an article by Tom R. Halfhill
  8. '   in the March 86 Compute!
  9. '
  10. ' Parameters:
  11. '   line1$ - 1st line of requester text
  12. '   line2$ - 2nd line of requester text
  13. '   w% ----- window id number
  14. '   s% ----- screen id number (0 for current)
  15. '   ans% --- return parm;
  16. '            true for OK, false for Cancel
  17. '--------------------------------------------
  18. cols= 80: ' Change to 60 for 60-col prefs
  19. true= -1:  false=0: dunno=1
  20. okx1= 12: okx2= 50: oky1=20: oky2=38: ' x,y coords of OK
  21. cnx1=152: cnx2=228: cny1=20: cny2=38: ' x,y coords of Cancel
  22. IF s%=0 THEN
  23.    WINDOW w%,"Program Request",(0,0)-(311,45),16
  24. ELSE
  25.    WINDOW w%,"Program Request",(0,0)-(311,45),16,s%
  26. END IF
  27. COLOR 0,1:        ' blue on white
  28. PRINT CHR$(12);:  ' clear window
  29. IF cols=80 THEN
  30.    maxlen=INT(WINDOW(w%)/8)
  31. ELSE
  32.    maxlen=INT(WINDOW(w%)/10)
  33. END IF
  34. l1$=LEFT$(line1$,maxlen)
  35. l2$=LEFT$(line2$,maxlen)
  36. PRINT l1$
  37. PRINT l2$
  38. 'Draw buttons
  39. LINE (okx1,oky1)-(okx2,oky2),3,b
  40. LINE (cnx1,cny1)-(cnx2,cny2),3,b
  41. LOCATE 4,1 
  42. PRINT PTAB(okx1+8);"OK";
  43. PRINT PTAB(cnx1+8);"Cancel"
  44. 'Check for box hit
  45. ans%=dunno
  46. WHILE ans%=dunno
  47.  
  48.   WHILE MOUSE(0)=0
  49.   ' wait for button press
  50.   WEND
  51.   m1=MOUSE(1): m2=MOUSE(2)
  52.   IF (m1>okx1 AND m1<okx2) AND (m2>oky1 AND m2<oky2) THEN
  53.      ' OK box hit
  54.      ans%=true
  55.      LINE (okx1,oky1)-(okx2,oky2),2,bf
  56.   END IF
  57.   IF (m1>cnx1 AND m1<cnx2) AND (m2>cny1 AND m2<cny2) THEN
  58.      ' Cancel box hit
  59.      ans%=false
  60.      LINE (cnx1,cny1)-(cnx2,cny2),2,bf
  61.   END IF   
  62. WEND     
  63. WHILE MOUSE(0)<>0
  64. ' wait for button release
  65. WEND
  66. WINDOW CLOSE w%
  67. END SUB
  68.  
  69. 'Test driver
  70. LOCATE 20,1
  71. PRINT "Testing 'req'..."
  72. answer%=(0=0)
  73. WHILE answer%
  74.   CALL req("This is a test of 'req'"," click either box",2,0,answer%)
  75.   IF answer% THEN
  76.      PRINT "'OK' clicked!"
  77.   ELSE
  78.      PRINT "'Cancel' clicked!"
  79.   END IF
  80. WEND
  81. END
  82.